<?php

/**
 * DetallePaciente form.
 *
 * @package    form
 * @subpackage DetallePaciente
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 6174 2007-11-27 06:22:40Z fabien $
 */
class DetallePacienteForm extends BaseDetallePacienteForm
{
  protected function initialize()
  {
    $this->labels = array
                    (
                      'paciente_id'          => 'Paciente',
                      'tipo_glucosa_id'      => 'Tipo de Glucosa',
                      'clasificacion_imc_id' => 'Clasificaci&ocute;n IMC<br>(<i>Indice de Masa Corporal</i>)',
                      'peso'                 => 'Peso (Kg.)',
                      'estatura'             => 'Estatura (mts.)',
                      'glucosa'              => 'Nivel de Glucosa (ml/mg)',
                    );
  }
  public function configure()
  {
    $this->setWidgets(array(
      'id'                   => new sfWidgetFormInputHidden(),
      'paciente_id'          => new sfWidgetFormValue(array('value' => $this->getObject()->getPaciente()->getTitular())),
      'peso'                 => new sfWidgetFormInput(),
      'estatura'             => new sfWidgetFormInput(),
      'tipo_glucosa_id'      => new sfWidgetFormDoctrineSelect
                                (  
                                  array
                                  (
                                    'model'     => 'TipoGlucosa', 
                                    'add_empty' => '---Seleccionar---', 
                                    'order_by'  => array('Nombre', 'asc')
                                  )
                                ),
      'glucosa'              => new sfWidgetFormInput(),
    ));
    
    $this->types = array
    (
      'id'                   => '=',
      'paciente_id'          => '-',
      'tipo_glucosa_id'      => array('combo', array()),
      'clasificacion_imc_id' => '-',
      'peso'                 => 'float',
      'estatura'             => 'float',
      'glucosa'              => 'float',
      'created_at'           => '-',
      'updated_at'           => '-',
    
    );
  }
  
  public function updateObject($values = null)
  {
    if (is_null($values))
    {
      $values = $this->values;
    }

    $values = $this->processValues($values);
    $values = $this->fixValues($values);
    
    $imc = $values['peso']/($values['estatura']*$values['estatura']);
    $ClasificacionImc = Doctrine::getTable('ClasificacionImc')->getResultadoPorClasificacionImc($imc);
    $values['clasificacion_imc_id'] = $ClasificacionImc->getId();
    
    $usuario_id = $this->getUser()->getUsuarioId();
  	$paciente   = Doctrine::getTable('Paciente')->getPacientePrincipal($usuario_id);
  	
  	$values['paciente_id'] = $paciente->getId();
    $this->object->fromArray($values);
   
    $this->updateObjectEmbeddedForms($values);
    return $this->object;
  }
}